<?php

class visitaVaziaController extends Object{
  
    /**
    * Cria um visita vazia
    * @return bool true caso consiga criar um visita vazia
    */
    public function formulario(){
        $this->RedirectIfNotHasDefinedEmpresa();
        $this->RedirectIfNotHasDecisor();
        if(!$this->checkEventoAtivo()) return false;
        return $this->createNew();
    }
    
    /**
    * Redireciona para a página de criação de uma empresa caso a 
    * session da mesma não esteja definida
    */
    private function RedirectIfNotHasDefinedEmpresa(){
        
        if(!isset($_SESSION['venda/empresa'])) {
            cookie::setVar("visiting", LINK."/formulario");
            Redirect ('venda/empresa/formulario');
        }
        
        $this->LoadModel('venda/empresa', 'emp');
        $count = $this->emp->getCount("
            venda_empresa_cod = '" . $_SESSION['venda/empresa'] ."'AND 
            venda_empresa_status != 'unsaved'"
        );
        if($count == 0){
            unset($_SESSION['venda/empresa']);
            cookie::setVar("visiting", LINK."/formulario");
            Redirect ('venda/empresa/formulario');
        }
    }
    
    /**
    * Redireciona para a página de criação de funcionários caso a empresa não tenha nenhum decisor
    */
    private function RedirectIfNotHasDecisor(){
        $this->LoadModel('venda/funcionario', 'func');
        if(!$this->func->HasDecisor($_SESSION['venda/empresa'])){
            Redirect ('venda/funcionario/formulario');
        }
    }
    
    /**
    * Verifica o evento que estamos tentando cadastrar está ativo
    * @return bool true caso estaja ativo, false caso contrário
    */
    private function checkEventoAtivo(){
        $this->LoadModel('venda/equipe', 'eq');
        $cod_evento = $this->eq->getActiveEventOfUser();
        if($cod_evento == ""){
            $this->registerVar('info', 
               'Para registrar uma visita você deve participar de uma equipe que contenha algum evento ativo'
            );
            return false;
        }
        $_SESSION['venda/evento'] = $cod_evento;
        
        $cod_equipe = $this->eq->getCodEquipeOfUser();
        if(!$this->eq->EquipeHasEventoAtivo($cod_equipe)){
            $arr['erro'] = "Você só pode cadastrar novas empresas se tiver algum evento ativo em sua equipe";
            cookie::setVar($this->sess_cont_alerts, $arr);
            Redirect("venda/equipe/show/$cod_equipe");
            return false;
        }
        return true;
    }
    
    /**
    * Cria a visita vazia
    * @return bool false caso não consiga criar a nova visita ou 
    * retorna um int contendo o código da visita recém criada
    */
    private function createNew(){
        $cod_empresa  = $_SESSION['venda/empresa'];
        $cod_usuario  = usuario_loginModel::CodUsuario();
        $this->LoadClassFromPlugin('venda/visita/visitaVaziaMd', 'vv');
        $cod = $this->vv->getEmpty($cod_empresa, $cod_usuario);
        $this->setMessages($this->vv->getMessages());
        if($cod === false){
            $this->setMessages($this->vv->getMessages());
            return false;
        }
        Redirect(LINK."/edit/$cod");
    }
    
}

?>